################################################################################
##
##  Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
##  Version 2.x, Copyright (C) 2001, Paul Marquess.
##  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
##  This program is free software; you can redistribute it and/or
##  modify it under the same terms as Perl itself.
##
################################################################################

=provides

my_sprintf

=implementation

#if !defined(my_sprintf)
#if { NEED my_sprintf }

int
my_sprintf(char *buffer, const char* pat, ...)
{
    va_list args;
    va_start(args, pat);
    vsprintf(buffer, pat, args);
    va_end(args);
    return strlen(buffer);
}

#endif
#endif

=xsinit

#define NEED_my_sprintf

=xsubs

void
my_sprintf()
        PREINIT:
                char buf[128];
                int len;
        PPCODE:
                len = my_sprintf(buf, "foo%s%d", "bar", 42);
                mXPUSHi(len);
                mXPUSHs(newSVpv(buf, 0));
                XSRETURN(2);

=tests plan => 2

my($l, $s) = Devel::PPPort::my_sprintf();
ok($l, 8);
ok($s, "foobar42");
